import os
#获取当前文件的目录名,即获取当前项目的绝对路径
basedir=os.path.abspath(os.path.dirname(__file__))
#print(basedir)

class Config:
    """
    所有配置环境的基类，即不管是开发环境还是测试环境，配置相同的
    都写在Config里面，包含通用配置，称为配置环境的基类
    """
    SECRET_KEY='todolist secret key'
    # 尤其在涉及（flask-WTF）登陆页面提交敏感信息时，一定要设置密钥
    SQLALCHEMY_COMMIT_ON_TEARDOM=True
    # 是否自动提交、
    SQLALCHEMY_TRACK_MODIFICATIONS=True
    # 是否追踪修改，从Flask-SQLALchemy文档中查看
    #FLASK_MAIL_SUBJECT_PREFIX='安安的ToDolist'
    #FLASK_MAIL_SENDER='13835810012@163.com'
    # 查看任务todo/list中，需要配置一个每页显示几条数据的信息
    PER_PAGE=5


class DevelopmentConfig(Config):
    """
    开发环境配置
    """
    DEBUG=True
    #启用调试支持，服务器会在代码修改后自动载入，并在发生错误时提供一个相当有用的调试器
    """
    QQ邮箱：MAIL_PORT=465(是QQ邮箱特有的，可在QQ邮箱设置中查看) MAIL_USE_SSL=True
    163邮箱：MAIL_PORT=25(采用所有邮箱默认的端口) MAIL_USE_SSL=False(系统默认为关闭，而且这里不需要开启，因此可以不写)
    """
    MAIL_SERVER='smtp.163.com'           # 邮件服务器
    MAIL_PORT=25                         # 邮件服务器的端口
    # MAIL_USE_TLS=True qq邮箱需要，网易不需要
    MAIL_USERNAME='13835810012@163.com'  # 发送者邮箱账号
    MAIL_PASSWORD='XTHNVMRBCYASMVJH'     # 授权码而不是邮箱密码
    SQLALCHEMY_DATABASE_URI='sqlite:///' + os.path.join(basedir,'data-dev.sqlite')
    #sqlite:///表示sqlite协议，开发环境下的数据存放在当前文件下的data-dev的sqlite中

class TestingConfig(Config):
    """
    测试环境的配置信息
    """
    TESTING=True
    SQLALCHEMY_DATABASE_URI='sqlite:///' + os.path.join(basedir,'data-test.sqlite')

class ProductionConfig(Config):
    """
    生产环境的配置信息
    """
    DEBUG = False
    # 这里不启用调试器
    """
    QQ邮箱：MAIL_PORT=465(是QQ邮箱特有的，可在QQ邮箱设置中查看) MAIL_USE_SSL=True
    163邮箱：MAIL_PORT=25(采用所有邮箱默认的端口) MAIL_USE_SSL=False(系统默认为关闭，而且这里不需要开启，因此可以不写)
    """
    MAIL_SERVER = 'smtp.163.com'  # 邮件服务器
    MAIL_PORT = 25  # 邮件服务器的端口
    # MAIL_USE_TLS=True qq邮箱需要，网易不需要
    MAIL_USERNAME = '13835810012@163.com'  # 发送者邮箱账号
    MAIL_PASSWORD = 'XTHNVMRBCYASMVJH'  # 授权码而不是邮箱密码
    SQLALCHEMY_DATABASE_URI='mysql://flask:anning@60.205.195.162/todolist'

#为每一个配置环境起一个名字
config={
    'development':DevelopmentConfig,
    'testing':TestingConfig,
    'production':ProductionConfig,
    'default':DevelopmentConfig
    #默认是在开发环境中
}